上一篇介紹了Hashmat the brave warrior,這題只需要輸入兩個數字,並讓兩個數字相減之後取出絕對值就可以得到答案了,是一題非常簡單的題目。
今天講解的題目是What is the Probability?
先附上程式碼:
import java.util.;
import static java.lang.System.;
public class main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()){
int C=sc.nextInt();
for(int i=0;i<C;i++){
int A=70;
int x=sc.nextInt();
double p=sc.nextDouble();
double q=1-p;
int k=sc.nextInt();
double a=Math.pow(q,k-1)p;
double r=Math.pow(q,x);
if(p==0){
System.out.println("0.0000");
}else{
System.out.printf("%.4f\r\n",a(1-Math.pow(r,A))/(1-r));
}
}
}
}
};
這題首先要我們輸入一個數字,代表幾題,再來是幾個人,再來是獲勝的機率,最後是第幾個人獲勝,
假設贏的機率是 p,輸的機率是 q = (1 - p),再假設有 n個人:
在第一回合中,第一個人贏的機率是 p。
在第一回合中,第二個人贏的機率是 q * p。
第二回合
在第二回合中,第一個人贏的機率是 q^n * p。 (第一回合中每個人都失敗)
在第二回合中,第二個人贏的機率是 q^n * q * p。
在第二回合中,第 k個人贏的機率是 q^n * q^(k - 1) * p。
以此類推,也就是說在第 R回合中,第 k個人贏的機率是 q^( (R - 1) * n) * q^(k - 1) * p。
也就是依照以上公式寫出程式碼,要注意的是有小數點,所以要使用double。
今天的講解就到這裡。
明天會是最後一篇了,我打算來講個心得總結,謝謝各位。